package leetcode.cn;

import java.util.Arrays;

/**
 * @version 1.8
 * @Author Djx_hmbb
 * @Date 2023/10/8 19:48
 * @注释:409.最长回文串
 */
public class LongestHuiWen {
//    给定一个包含大写字母和小写字母的字符串 s ，返回 通过这些字母构造成的 最长的回文串 。
//    在构造过程中，请注意 区分大小写 。比如 "Aa" 不能当做一个回文字符串。

//    示例 1:
    //输入:s = "abccccdd"
    //输出:7
    //解释:
    //我们可以构造的最长的回文串是"dccaccd", 它的长度是 7。

//    示例 2:
    //输入:s = "a"
    //输出:1

//    示例 3：
    //输入:s = "aaaaaccc"
    //输出:7

    public static int longestPalindrome(String s) {
//        int js = 0;
//        int sum = 0;
//        int j = 0;
//        char[] cs = s.toCharArray();
//        for(int i =0;i<cs.length;i++){
//            int count = 1;//cs[i]的个数
//            for(j = i+1;j<cs.length;j++){
//                if(cs[i] != cs[j]){
//                    break;
//                }else{
//                    count++;
//                }
//            }
//            if(count == 1){
//                js++;
//                sum+=1;
//            }else if(count%2 == 1 && count != cs.length){
//                sum+=(count-1);
//            }else {
//                sum+=count;
//            }
////            sum += count;
//            if(j == cs.length){
//                break;
//            }else i = j-1;////
//        }
//        if(js >= 1 )sum = sum-js+1;
//        return sum;
        char[] c = s.toCharArray();
        Arrays.sort(c);
        int count = 1, cur = 0, js = 0;
        while (cur < c.length-1) {
            if(c[cur] == c[cur+1]) count++;
            else if(count%2 == 1){
                js++;
                count = 1;
            }
            else count = 1;
            cur++;
        }
        if(c.length >= 2 && c[c.length-2] != c[c.length-1]){
            js++;
        }
        if(js>=2)return c.length-js+1;
        return c.length;
    }

        public static void main (String[]args){
            String s = "aaaAaaaa";
            int i = longestPalindrome(s);
            System.out.println(i);
//        test(s);

        }
        public static void test (String s){
            char[] c = s.toCharArray();
            Arrays.sort(c);
            for (char i :
                    c) {
                System.out.println(i);
            }
        }
}
